﻿using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HangYi_Coffee_Class
{
    /// <summary>
    /// 商品表
    /// </summary>
    /// <returns></returns>
    public class Commodity
    {
        /// <summary>
        /// 编号id
        /// </summary>
        /// <returns></returns>
        public int Id { get; set; }
        /// <summary>
        /// 商品名称
        /// </summary>
        /// <returns></returns>
        public string? Name { get; set; }

        /// <summary>
        ///0--拿铁
        ///1--特色冰咖
        ///2--沙冰
        ///3--奶茶
        ///4--果茶
        ///5--冰淇淋
        ///6--甜点
        ///7--钜惠
        ///8--冷泡茶
        ///9--活动相关
        /// </summary>
        
        /// <summary>
        /// 商品价格
        /// </summary>
        /// <returns></returns>
        public double? Price { get; set; }
        /// <summary>
        /// 商品图片路径
        /// </summary>
        /// <returns></returns>
        public string? ImageUrl { get; set; }
        /// <summary>
        /// 商品销售量
        /// </summary>
        /// <returns></returns>
        public int? Sales { get; set; }
        /// <summary>
        /// 商品上架时间
        /// </summary>
        /// <returns></returns>
        public DateTime? DateTime { get; set; }
        /// <summary>
        /// 商品甜度选择
        /// </summary>
        /// <returns></returns>
        public List<SugarOption>? SugarOptions { get; set; }
        /// <summary>
        /// 商品温度选择
        /// </summary>
        /// <returns></returns>
        public List<TemperatureOption>? TemperatureOptions { get; set; }
        /// <summary>
        /// 商品杯型选择
        /// </summary>
        /// <returns></returns>
        public List<Cup_typeOption>? CupTypeOptions { get; set; }
        /// <summary>
        /// 商品冰块选择
        /// </summary>
        /// <returns></returns>
        public List<IceOption>? IceOptions { get; set; }
        /// <summary>
        /// 商品所属类别id
        /// </summary>
        /// <returns></returns>
        public int SortId { get; set; } // 外键  
        /// <summary>
        /// 商品所属类别
        /// </summary>
        /// <returns></returns>
        public Sort Sort { get; set; } // 导航属性
    }
    

}
 ///</summary>
        ///将糖选项作为单独的表：
        ///优点：这种方法使得糖选项的管理更加灵活，可以轻松地添加、删除或修改糖的类型。它也更符合数据库的范式化设计。
        ///缺点：每次查询奶茶详细信息时，都需要进行额外的关联操作来检索糖的类型，这可能会稍微增加查询的复杂性和性能开销，尤其在大型数据集上。
        ///将糖选项存储在一张表中：
        ///优点：这种方法可能会减少关联操作的需求，因为糖的类型直接存储在奶茶详细信息表中。这样查询可能会更快速。
        ///缺点：如果需要修改、添加或删除糖的类型，就需要更改表结构，这可能会更加复杂和繁琐。此外，这种方法可能违反数据库的范式化设计原则。
        ///综合考虑，如果你的应用程序需要频繁地修改糖的类型或者对查询性能没有极高的要求，那么第一种方法将更加灵活和维护友好
        ///但是如果你的应用程序对查询性能非常敏感，而且糖的类型相对稳定，那么第二种方法可能更适合。
        ///在任何情况下，都可以使用适当的索引和查询优化来提高性能。你可以在开发过程中进行性能测试，以确定哪种设计更适合你的需求。
        ///
        /// 根据实际选择外接表
        /// </summary>